package com.qf.pojo;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author 高圆圆
 * @date 2023/4/24 16:08
 * 购物车实体
 *
 *
 */
public class Cart {

    //Map集合实例--代表存储的多个购物车项
    //Key:代表商品id
    //Value:购物车项CartItem



    private Map<String ,CartItem> map = new LinkedHashMap<>() ;//保证迭代次序有序
    private double totalMoney = 0.0 ;//购物车总金额


    //获取所有值---集合Collection<V> values()
    public Collection<CartItem> getCartItems(){ //cartItems 购物车的bean属性
        return  map.values() ;
    }



    public Cart() {
    }

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public double getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(double totalMoney) {
        this.totalMoney = totalMoney;
    }

    /**
     * 定义一个方法:将购物车项添加购物车中
     * @param cartItem 购物车项实体
     */
    public void addCartItem2Cart(CartItem cartItem) {
        //1)先获取到新添加的购物车项的商品id
        String pid = cartItem.getProduct().getPid();
        //2)在Map中判断键是否重复
        if(map.containsKey(pid)){
            //重复了
            //直接获取以前的购物车项的数量数量,封装商品数量
            CartItem oldCartItem = map.get(pid);
            oldCartItem.setCount(oldCartItem.getCount()+1) ;
        }else{
            //不重复
            //直接给map添加数据u
            map.put(pid,cartItem) ;
        }
        //总金额在变化
        totalMoney += cartItem.getSubTotal();
    }

    //删除购物车项从购物车中
    public void removeCartItemFromCart(String pid){
        CartItem cartItem = map.remove(pid); //将指定的商品编号对应的购物车项删除
        //设置总金额
        totalMoney -= cartItem.getSubTotal();
    }

    //清空购物车
    public void clearCart(){
        map.clear();  //将购物车项全部删除
        totalMoney = 0.0 ;
    }
}
